package com.sample.android.dao;

import java.util.ArrayList;
import java.util.List;

import com.sample.android.entity.Lien;
import com.sample.android.sqlite.MySQLiteHelper;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class LienDataSource
{

	// Database fields
	private SQLiteDatabase	database;
	private MySQLiteHelper	dbHelper;
	private String[]		allColumns	= { "_id", "url", "date_ajout_fr",
			"date_ajout_en", "Dossier_id" };

	public LienDataSource(Context context)
	{
		dbHelper = new MySQLiteHelper(context);
	}

	public void open() throws SQLException
	{
		database = dbHelper.getWritableDatabase();
	}

	public void close()
	{
		dbHelper.close();
	}

	public Lien createLien(String url, String date_ajout_fr,
			String date_ajout_en, long dossier_id, long _id)
	{
		ContentValues values = new ContentValues();
		values.put("url", url);
		values.put("date_ajout_fr", date_ajout_fr);
		values.put("date_ajout_en", date_ajout_en);
		values.put("_id", _id);
		values.put("Dossier_id", dossier_id);
		long insertId = database.insert("Lien", null, values);
		Cursor cursor = database.query("Lien", allColumns, "_id = " + insertId,
				null, null, null, null);
		cursor.moveToFirst();
		Lien newLien = cursorToLien(cursor);
		cursor.close();
		return newLien;
	}

	public Lien createLien(Lien lien)
	{
		return createLien(lien.getUrl(), lien.getDate_ajout_fr(),
				lien.getDate_ajout_en(), lien.getDossier_id(), lien.getId());
	}

	public void deleteLien(Lien lien)
	{
		long id = lien.getId();
		System.out.println("Lien deleted with id: " + id);
		database.delete("Lien", "_id = " + id, null);
	}

	public List<Lien> getAllLiens()
	{
		List<Lien> liens = new ArrayList<Lien>();

		Cursor cursor = database.query("Lien", allColumns, null, null, null,
				null, null);

		cursor.moveToFirst();
		while (!cursor.isAfterLast())
		{
			Lien lien = cursorToLien(cursor);
			liens.add(lien);
			cursor.moveToNext();
		}
		// make sure to close the cursor
		cursor.close();
		return liens;
	}

	public List<Lien> getLiensByDossier(long Dossier_id)
	{
		List<Lien> liens = new ArrayList<Lien>();

		Cursor cursor = database.query("Lien", allColumns, "Dossier_id = "
				+ Dossier_id, null, null, null, null);

		cursor.moveToFirst();
		while (!cursor.isAfterLast())
		{
			Lien lien = cursorToLien(cursor);
			liens.add(lien);
			cursor.moveToNext();
		}
		// make sure to close the cursor
		cursor.close();
		return liens;
	}

	private Lien cursorToLien(Cursor cursor)
	{
		Lien lien = new Lien();
		lien.setId(cursor.getLong(0));
		lien.setUrl(cursor.getString(1));
		lien.setDate_ajout_fr(cursor.getString(2));
		lien.setDate_ajout_en(cursor.getString(3));
		lien.setDossier_id(cursor.getLong(4));
		return lien;
	}

}
